package reflect;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * ElementType.TYPE:注解可以被应用在类上、接口上、枚举上、注解上
 * ElementType.METHOD:注解可以被应用在方法上
 * ElementType.FIELD:注解可以被应用在属性上
 * ElementType.PARAMETER:注解可以被应用在参数上
 * ElementType.CONSTRUCTOR:注解可以被应用在构造器上
 *
 * 例如：当前注解只能在类上使用
 * @Target(ElementType.TYPE)
 * Retention(RetentionPolicy.RUNTIME):在类上用,运行时保留，可以通过反射获取注解信息
 * Retention(RetentionPolicy.SOURCE):在类上用,只保留源代码，不保留在class字节码文件中
 * Retention(RetentionPolicy.CLASS):在class字节码文件中（默认保留级别），不保留在运行时d
 *
 *
 */
@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD,ElementType.PARAMETER,ElementType.CONSTRUCTOR})
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {

}
